async-native-tls 0.4.0

Native TLS using futures
Documentation

Native TLS for async-std or tokio.

This crate uses SChannel on Windows (via schannel), Secure Transport on OSX (via security-framework), and OpenSSL (via openssl) on all other platforms.

Installation

$ cargo add async-native-tls

Cargo Feature Flags

  • runtime-async-std (on by default): Use the async-std runtime.

  • runtime-tokio: Use the tokio runtime. This is mutually exclusive with runtime-async-std.

Example

async-std

Requires runtime-async-std feature (on by default).

# Cargo.toml
[dependencies]
async-native-tls = "0.4"
use async_std::prelude::*;
use async_std::net::TcpStream;

let stream = TcpStream::connect("google.com:443").await?;
let mut stream = async_native_tls::connect("google.com", stream).await?;
stream.write_all(b"GET / HTTP/1.0\r\n\r\n").await?;

let mut res = Vec::new();
stream.read_to_end(&mut res).await?;
println!("{}", String::from_utf8_lossy(&res));

tokio

Requires runtime-tokio feature.

# Cargo.toml
[dependencies]
async-native-tls = { version = "0.4", default-features = false, features = [ "runtime-tokio" ] }
use tokio::prelude::*;
use tokio::net::TcpStream;

let stream = TcpStream::connect("google.com:443").await?;
let mut stream = async_native_tls::connect("google.com", stream).await?;
stream.write_all(b"GET / HTTP/1.0\r\n\r\n").await?;

let mut res = Vec::new();
stream.read_to_end(&mut res).await?;
println!("{}", String::from_utf8_lossy(&res));

Contributing

Want to join us? Check out our "Contributing" guide and take a look at some of these issues:

License